package com.beauty.inventory.service;

import com.beauty.inventory.dto.InventoryRequest;
import com.beauty.inventory.dto.InventoryResponse;

import java.util.List;

public interface InventoryService {
    
    InventoryResponse createInventory(InventoryRequest inventoryRequest);
    
    InventoryResponse getInventoryById(Long id);
    
    InventoryResponse getInventoryByProductId(String productId);
    
    /**
     * 获取产品库存信息
     * 
     * @param productId 产品ID
     * @return 库存响应对象
     */
    InventoryResponse getProductInventory(String productId);
    
    List<InventoryResponse> getInventoriesByWarehouseId(String warehouseId);
    
    List<InventoryResponse> getLowStockItems();
    
    List<InventoryResponse> getAvailableItems();
    
    List<InventoryResponse> getAllInventories();
    
    InventoryResponse updateInventory(Long id, InventoryRequest inventoryRequest);
    
    void deleteInventory(Long id);
    
    InventoryResponse addStock(String productId, Integer quantity);
    
    InventoryResponse reduceStock(String productId, Integer quantity);
    
    InventoryResponse reserveStock(String productId, Integer quantity);
    
    InventoryResponse releaseReservedStock(String productId, Integer quantity);
    
    InventoryResponse increaseStock(String productId, Integer quantity);
} 